package com.theBestBuy.code;

import java.util.ArrayList;
import java.util.List;


import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.net.Uri;
import android.os.Bundle;
import android.os.IBinder;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Adapter;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class Consumer extends Activity{
	private MyService s;
	private ArrayList<String> values;
	
	private AdaptadorTitulares adaptador;
	
	
	private ArrayList<Titular> datos = new ArrayList();
	String user;
	String pass;
			
	
	//Llamado cuando el activity se crea por primera vez
	@Override
	public void onCreate(Bundle savedInstanceState){
		
        super.onCreate(savedInstanceState);
        setContentView(R.layout.lista);
        Bundle bundle=getIntent().getExtras();
        String info = bundle.getString("datos");
         user = bundle.getString("usuario");
         pass = bundle.getString("pass");
        
        preparaDatos(info);
//        doBindService(); 
        adaptador = new AdaptadorTitulares(this);        
        ListView lstOpciones = (ListView)findViewById(R.id.LstOpciones);
        
        lstOpciones.setAdapter(adaptador);
        lstOpciones.setOnItemClickListener(new AdapterView.OnItemClickListener() {

			public void onItemClick(AdapterView<?> arg0, View vista, int position,long arg3) {
				String telefono = null;
				Intent callIntent = new Intent(Intent.ACTION_CALL);
				String propietario  = datos.get(position).getPropietario();
				if(propietario!=null){
						String[] telefProp = propietario.split(":");
						telefono = telefProp[2];
				}
				callIntent.setData(Uri.parse("tel:"+telefono));
				startActivity(callIntent);
			}
        	
        
		});
     // add PhoneStateListener
     		PhoneCallListener phoneListener = new PhoneCallListener();
     		TelephonyManager telephonyManager = (TelephonyManager) this
     			.getSystemService(Context.TELEPHONY_SERVICE);
     		telephonyManager.listen(phoneListener,PhoneStateListener.LISTEN_CALL_STATE);
    }
	
	
	
	
	private void preparaDatos(String datosWS) { 
		if(datosWS!=null){
			String[] info = datosWS.split("=");
			String  iDatos;
			if(info.length == 1){
				iDatos =  info[0];
			}else {
				iDatos = info[1];
			}

			String iDatosFinal = iDatos.substring(0,iDatos.length()-3); 
			String[] productos = iDatosFinal.split("/");
			if(productos!=null && productos.length>0){
			for (int i =0;i<productos.length;i++) {
				String[] elementos = productos[i].split(",");
				datos.add(new Titular(elementos[0], elementos[1]+"   "+elementos[2], elementos[3]+"   "+elementos[4]));		
			}
			
			}
		}
		
	}



	class AdaptadorTitulares extends ArrayAdapter {
    	
    	Activity context;
    	
    	AdaptadorTitulares(Activity context) {
    		super(context, R.layout.listitem_titular, datos);
    		this.context = context;
    	}
    	
    	public View getView(int position, View convertView, ViewGroup parent) {
			LayoutInflater inflater = context.getLayoutInflater();
			View item = inflater.inflate(R.layout.listitem_titular, null);
			
			TextView lblTitulo = (TextView)item.findViewById(R.id.LblTitulo);
			lblTitulo.setText(datos.get(position).getTitulo());
			
			TextView lblSubtitulo = (TextView)item.findViewById(R.id.LblSubTitulo);
			lblSubtitulo.setText(datos.get(position).getCategoria());
			
			TextView LblPropietario = (TextView)item.findViewById(R.id.LblPropietario);
			LblPropietario.setText(datos.get(position).getPropietario());
			
			return(item);
		}
    	
    }
	//monitor phone call activities
		private class PhoneCallListener extends PhoneStateListener {
	 
			private boolean isPhoneCalling = false;
	 
			String LOG_TAG = "LOGGING 123";
	 
			@Override
			public void onCallStateChanged(int state, String incomingNumber) {
	 
				if (TelephonyManager.CALL_STATE_RINGING == state) {
					// phone ringing
					Log.i(LOG_TAG, "RINGING, number: " + incomingNumber);
				}
	 
				if (TelephonyManager.CALL_STATE_OFFHOOK == state) {
					// active
					Log.i(LOG_TAG, "OFFHOOK");
	 
					isPhoneCalling = true;
				}
	 
				if (TelephonyManager.CALL_STATE_IDLE == state) {
					// run when class initial and phone call ended, 
					// need detect flag from CALL_STATE_OFFHOOK
					Log.i(LOG_TAG, "IDLE");
	 
					if (isPhoneCalling) {
	 
						Log.i(LOG_TAG, "restart app");
	 
						// restart app

						Intent i = new Intent();
						i.setClass(Consumer.this,Consumer.class);
						startActivity(i);
						isPhoneCalling = false;
					}
	 
				}
			}
		}
		
		
	public  void reiniciarActivity(Activity actividad){
	        Intent intent=new Intent();
	        intent.setClass(actividad, actividad.getClass());
	        //llamamos a la actividad
	        actividad.startActivity(intent);
	        //finalizamos la actividad actual
	        actividad.finish();
	}
	
	public void showServiceData(View view){
		
        CargaDatosWS ws = new CargaDatosWS();
        String info = ws.checkLogin(user, pass);
        preparaDatos(info);
        adaptador.notifyDataSetChanged();
		
	}

	public ArrayList<Titular> getDatos() {
		return datos;
	}

	public void setDatos(ArrayList<Titular> datos) {
		this.datos = datos;
	}

		
	

}
